home *** CD-ROM | disk | FTP | other *** search
- /* program do wyprobowania jak chodza zasoby PCI */
- /* resorce i biblioteka */
- /* jednoczesnie sprawdza czy inkludy sa dobre */
- #include <exec/libraries.h>
- #include <clib/exec_protos.h>
-
- #include <resources/pcibase.h>
- #include <clib/pcires_protos.h>
- #include <pragmas/pcires_pragmas.h>
-
- #include <libraries/pciexpansionbase.h>
- #include <libraries/pciexpansion.h>
- #include <clib/pciexpansion_protos.h>
- #include <pragmas/pciexpansion_pragmas.h>
-
- #include <stdio.h>
- #include "embqspan.h"
-
-
- extern struct PCIBase * PCIResource = NULL;
- extern struct PCIExpBase * PCIExpansionBase = NULL;
- char __stdiowin[]="CON:0/10/620/240/Try pci";
- char __stdiov37[]="/CLOSE/WAIT";
-
-
- char *class_table[256];
- char linia[80];
- long sizet[5];
- unsigned char tmp;
-
- unsigned long GetSize(unsigned long base)
- {
- return (~base)+1;
- }
-
-
- struct TagItem tags[] = {
- /* {PCIE_VENDORID, 0x5333},
- {PCIE_BASECLASSCODE, 0x3}, */
- {TAG_DONE, 0 } };
-
- int main(int argc, char * argv[])
- {
- ULONG pageid, oldcache;
- struct PCIMapping * map;
- volatile ULONG * p;
- volatile unsigned char *pc;
- struct PCIConfDev * pcidev0 = NULL;
-
- oldcache = CacheControl(0x2011,0xFFFFFFFF);
-
- PCIResource = OpenResource(PCIRESNAME);
- if (PCIResource)
- {
- printf("Success - resources opened !!!!\n");
- PCIExpansionBase = (struct PCIExpBase *)OpenLibrary(PCIEXPANSIONNAME,0L);
- if (PCIExpansionBase)
- {
- printf("Success - library opened !!!!\n");
-
-
- while (pcidev0 = FindPCIDev(pcidev0,tags))
- {
- printf("%08x\n",pcidev0);
- printf("Odczyt - %08X\n", GetPCIReg(pcidev0, 0));
- }
- pcidev0 = AllocPCIDev();
- if (pcidev0 == 0)
- printf("Unable to allocate PCIConfDev\n");
- else
- {
- AddPCIDev(pcidev0);
- RemPCIDev(pcidev0);
- FreePCIDev(pcidev0);
- }
-
- CloseLibrary((struct Library *)PCIExpansionBase);
- }
- else
- printf("Unable to open pciexpansion.library\n");
- printf("Karta w slocie 0 %08X\n", pageid=IntReadCfgReg(0,0));
- printf("Karta w slocie 3 %08X\n", pageid=IntReadCfgReg(3,0));
- map = AllocPCIMapping();
- map->request.address = 0x100157;
- map->request.space = SPACE_MEMORY;
-
-
- pageid = (UBYTE *)&(map->request.space) - (UBYTE *)map;
- printf("Offset %d\n", pageid);
-
- pageid = StorePCIPage(map);
- p = (ULONG *)map->m68_address;
- pageid = RestorePCIPage(map);
- printf("Liczba bledow %ld \n", pageid);
- map->request.address = 0x5000152;
- map->request.space = SPACE_MEMORY;
- map->request.flags |= PCIF_FIFO;
- pageid = ObtainPCIPage(map);
- p = (ULONG *)map->m68_address;
- pageid = ReleasePCIPage(map);
- printf("Liczba bledow %ld \n", pageid);
- map->request.address = 0x3c3;
- map->request.space = SPACE_IO;
- pageid = ObtainPCIPage(map);
- pc = (unsigned char *)map->m68_address;
- printf("odczyt = %d\n", *pc);
- *pc = 1;
- printf("odczyt = %d\n", *pc);
- pc = 0x1000;
- printf("odczyt = %d\n", *pc);
- *pc=10;
- printf("odczyt = %d\n", *pc);
- pageid = ReleasePCIPage(map);
- printf("Liczba bledow %ld \n", pageid);
- FreePCIMapping(map);
-
- }
- else
- printf("Failure - unable to open %s :((((\n", PCIRESNAME);
-
-
- }
-
-